package SimplePractice;

import java.util.LinkedList;

public class Demo155 {
//	155. 最小栈
//	设计一个支持 push ，pop ，top 操作，并能在常数时间内检索到最小元素的栈。
//
//	push(x) —— 将元素 x 推入栈中。
//	pop() —— 删除栈顶的元素。
//	top() —— 获取栈顶元素。
//	getMin() —— 检索栈中的最小元素。
	
	class MinStack {
		LinkedList<Integer> stack = new LinkedList<Integer>();
		LinkedList<Integer> minStack = new LinkedList<Integer>();
		
	    public MinStack() {
	    	minStack.push(Integer.MAX_VALUE);
	    }
	    
	    public void push(int val) {
	    	stack.push(val);
	    	minStack.push(Math.min(minStack.peek(), val));
	    }
	    
	    public void pop() {
	    	stack.pop();
	    	minStack.pop();
	    }
	    
	    public int top() {
	    	return stack.peek();
	    }
	    
	    public int getMin() {
	    	return minStack.peek();
	    }
	}

}
